home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / e / capus2.lha / capus2 / UserStartup / Sources / UserStartup.e < prev    next >
Encoding:
Text File  |  1995-03-27  |  10.0 KB  |  351 lines

  1. /*=========================================================================================*/
  2. /* Source code generate by Gui2E v0.1 © 1994 NasGûl                                        */
  3. /*=========================================================================================*/
  4. /*======<<< Peps Header >>>======
  5.  PRGVERSION '0'
  6.  ================================
  7.  PRGREVISION '12'
  8.  ================================
  9.  AUTHOR      'NasGûl'
  10.  ===============================*/
  11. /*======<<<   History   >>>======
  12.  ===============================*/
  13.  
  14. OPT OSVERSION=37
  15. /*"MODULES"*/
  16. MODULE 'intuition/intuition','gadtools','libraries/gadtools','intuition/gadgetclass','intuition/screens',
  17.        'graphics/text','exec/lists','exec/nodes','exec/ports','eropenlib','utility/tagitem'
  18. MODULE 'dos/dos','dos/dosasl','mheader','dos/dosextens','dos/dostags'
  19. /**/
  20. /*"ENUM/CONST"*/
  21. ENUM ER_NONE,ER_LOCKSCREEN,ER_VISUAL,ER_CONTEXT,ER_MENUS,ER_GADGET,ER_WINDOW,
  22.      ER_BADARGS,ER_ONLYCLI
  23. /**/
  24. /*"GLOBALS DEF"*/
  25. DEF screen:PTR TO screen,
  26.     visual=NIL,
  27.     tattr:PTR TO textattr,
  28.     reelquit=FALSE,
  29.     offy,offx
  30. /*=======================================
  31.  = st Definitions
  32.  =======================================*/
  33. DEF st_window=NIL:PTR TO window
  34. DEF st_glist=NIL
  35. /*==================*/
  36. /*     Gadgets      */
  37. /*==================*/
  38. CONST GA_G_LIST=0
  39. /*=============================
  40.  = Gadgets labels of st
  41.  =============================*/
  42. DEF g_list
  43. DEF slist:PTR TO lh
  44. DEF cnode=-1
  45. DEF cmd[256]:STRING
  46. DEF intuicount,count,winx=0,winy=0,test=FALSE,nowin=FALSE,run=FALSE
  47. /**/
  48. /*"PMODULES"*/
  49. PMODULE 'Pmodules:PlistNoSort'
  50. PMODULE 'Pmodules:PMHeader'
  51. /**/
  52. /*"WINDOWS PROCEDURES"*/
  53. /*"p_OpenLibraries()"*/
  54. PROC p_OpenLibraries() HANDLE 
  55.     IF (intuitionbase:=OpenLibrary('intuition.library',37))=NIL THEN Raise(ER_INTUITIONLIB)
  56.     IF (gadtoolsbase:=OpenLibrary('gadtools.library',37))=NIL THEN Raise(ER_GADTOOLSLIB)
  57.     IF (gfxbase:=OpenLibrary('graphics.library',37))=NIL THEN Raise(ER_GRAPHICSLIB)
  58.     Raise(ER_NONE)
  59. EXCEPT
  60.     RETURN exception
  61. ENDPROC
  62. /**/
  63. /*"p_CloseLibraries()"*/
  64. PROC p_CloseLibraries()  
  65.     IF gfxbase THEN CloseLibrary(gfxbase)
  66.     IF gadtoolsbase THEN CloseLibrary(gadtoolsbase)
  67.     IF intuitionbase THEN CloseLibrary(intuitionbase)
  68. ENDPROC
  69. /**/
  70. /*"p_SetUpScreen()"*/
  71. PROC p_SetUpScreen() HANDLE 
  72.     IF (screen:=LockPubScreen('Workbench'))=NIL THEN Raise(ER_LOCKSCREEN)
  73.     IF (visual:=GetVisualInfoA(screen,NIL))=NIL THEN Raise(ER_VISUAL)
  74.     offy:=screen.wbortop+Int(screen.rastport+58)-10
  75.     Raise(ER_NONE)
  76. EXCEPT
  77.     RETURN exception
  78. ENDPROC
  79. /**/
  80. /*"p_SetDownScreen()"*/
  81. PROC p_SetDownScreen() 
  82.     IF visual THEN FreeVisualInfo(visual)
  83.     IF screen THEN UnlockPubScreen(NIL,screen)
  84. ENDPROC
  85. /**/
  86. /*"p_InitstWindow()"*/
  87. PROC p_InitstWindow() HANDLE 
  88.     DEF g:PTR TO gadget
  89.     IF (g:=CreateContext({st_glist}))=NIL THEN Raise(ER_CONTEXT)
  90.     IF (g_list:=CreateGadgetA(LISTVIEW_KIND,g,[offx+17,offy+15,285,48,'',tattr,0,0,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GTLV_LABELS,NIL,GT_UNDERSCORE,"_",TAG_DONE,0]))=NIL THEN Raise(ER_GADGET)
  91.     Raise(ER_NONE)
  92. EXCEPT
  93.     RETURN exception
  94. ENDPROC
  95. /**/
  96. /*"p_RenderstWindow()"*/
  97. PROC p_RenderstWindow()
  98.     IF p_EmptyList(slist)<>-1
  99.         Gt_SetGadgetAttrsA(g_list,st_window,NIL,[GA_DISABLED,FALSE,GTLV_SHOWSELECTED,TRUE,GTLV_SELECTED,cnode,GTLV_LABELS,slist,TAG_DONE])
  100.     ENDIF
  101.     DrawBevelBoxA(st_window.rport,offx+10,offy+12,298,53,[GT_VISUALINFO,visual,TAG_DONE,0])
  102.     RefreshGList(g_list,st_window,NIL,-1)
  103.     Gt_RefreshWindow(st_window,NIL)
  104. ENDPROC
  105. /**/
  106. /*"p_OpenstWindow()"*/
  107. PROC p_OpenstWindow() HANDLE 
  108.     IF (st_window:=OpenWindowTagList(NIL,
  109.                       [WA_LEFT,0,
  110.                        WA_TOP,0,
  111.                        WA_WIDTH,offx+318,
  112.                        WA_HEIGHT,offy+69,
  113.                        WA_IDCMP,$400278,
  114.                        WA_FLAGS,$102E,
  115.                        WA_GADGETS,st_glist,
  116.                        WA_CUSTOMSCREEN,screen,
  117.                        WA_TITLE,title_req,
  118.                        WA_SCREENTITLE,'Made With GadToolsBox V2.0b © 1991-1993',
  119.                        TAG_DONE]))=NIL THEN Raise(ER_WINDOW)
  120.     p_RenderstWindow()
  121.     ClearPointer(st_window)
  122.     Raise(ER_NONE)
  123. EXCEPT
  124.     RETURN exception
  125. ENDPROC
  126. /**/
  127. /*"p_RemstWindow()"*/
  128. PROC p_RemstWindow() 
  129.     IF st_window THEN CloseWindow(st_window)
  130.     IF st_glist THEN FreeGadgets(st_glist)
  131. ENDPROC
  132. /**/
  133. /**/
  134. /*"MESSAGES PROCEDURES"*/
  135. /*"p_LookAllMessage()"*/
  136. PROC p_LookAllMessage() 
  137.     DEF sigreturn
  138.     DEF stport:PTR TO mp
  139.     IF st_window THEN stport:=st_window.userport ELSE stport:=NIL
  140.     sigreturn:=Wait(Shl(1,stport.sigbit) OR
  141.                     $F000)
  142.     IF (sigreturn AND Shl(1,stport.sigbit))
  143.         p_LookstMessage()
  144.     ENDIF
  145.     IF (sigreturn AND $F000)
  146.         reelquit:=TRUE
  147.     ENDIF
  148. ENDPROC
  149. /**/
  150. /*"p_LookstMessage()"*/
  151. PROC p_LookstMessage() 
  152.    DEF mes:PTR TO intuimessage
  153.    DEF g:PTR TO gadget
  154.    DEF gstr:PTR TO stringinfo
  155.    DEF type=0,infos=NIL
  156.    DEF cn:PTR TO ln
  157.    WHILE mes:=Gt_GetIMsg(st_window.userport)
  158.        type:=mes.class
  159.        SELECT type
  160.            CASE IDCMP_MENUPICK
  161.               infos:=mes.code
  162.               SELECT infos
  163.               ENDSELECT
  164.            CASE IDCMP_INTUITICKS
  165.               INC intuicount
  166.               IF intuicount=count THEN reelquit:=TRUE
  167.            CASE IDCMP_GADGETUP
  168.               g:=mes.iaddress
  169.               infos:=g.gadgetid
  170.               SELECT infos
  171.                   CASE GA_G_LIST
  172.                     cn:=p_GetAdrNode(slist,mes.code)
  173.                     StringF(cmd,'S:\s\n',cn.name)
  174.                     reelquit:=TRUE
  175.               ENDSELECT
  176.        ENDSELECT
  177.        Gt_ReplyIMsg(mes)
  178.    ENDWHILE
  179. ENDPROC
  180. /**/
  181. /**/
  182. /*"APPLICATION PROCEDURES"*/
  183. /*"p_InitAPP()"*/
  184. PROC p_InitAPP()
  185.     DEF er
  186.     DEF i:PTR TO fileinfoblock
  187.     DEF anchor=NIL:PTR TO anchorpath
  188.     DEF name[256]:STRING
  189.     slist:=p_InitList()
  190.     anchor:=New(SIZEOF anchorpath+250)
  191.     anchor.strlen:=249
  192.     er:=MatchFirst('S:startup#?',anchor)
  193.     WHILE er=0
  194.         i:=anchor.info
  195.         StringF(name,'\s',i.filename)
  196.         IF EstrLen(name)<>16
  197.             cnode:=p_AjouteNode(slist,name,0)
  198.         ENDIF
  199.         er:=MatchNext(anchor)
  200.     ENDWHILE
  201.     MatchEnd(anchor)
  202.     Dispose(anchor)
  203. ENDPROC
  204. /**/
  205. /*"p_RemAPP()"*/
  206. PROC p_RemAPP()
  207.     p_CleanList(slist,FALSE,0,LIST_REMOVE)
  208. ENDPROC
  209. /**/
  210. /*"p_StartCli()"*/
  211. PROC p_StartCli() HANDLE
  212.     DEF myargs:PTR TO LONG,rdargs=NIL
  213.     myargs:=[0,0,0,0,0,0,0]
  214.     IF rdargs:=ReadArgs('DefautStartup/A,Time/N,PosX/N,PosY/N,Test/S,NoWindow/S,Run/S',myargs,NIL)
  215.         IF myargs[0] THEN StrCopy(cmd,myargs[0],ALL)
  216.         IF myargs[1]
  217.             count:=Long(myargs[1])*5
  218.         ELSE
  219.             count:=5
  220.         ENDIF
  221.         IF myargs[2] THEN winx:=Long(myargs[1]) ELSE winx:=0
  222.         IF myargs[3] THEN winy:=Long(myargs[2]) ELSE winy:=0
  223.         IF myargs[4] THEN test:=TRUE
  224.         IF myargs[5] THEN nowin:=TRUE
  225.         IF myargs[6] THEN run:=TRUE
  226.     ELSE
  227.         Raise(ER_BADARGS)
  228.     ENDIF
  229.     Raise(ER_NONE)
  230. EXCEPT
  231.     IF rdargs THEN FreeArgs(rdargs)
  232.     RETURN exception
  233. ENDPROC
  234. /**/
  235. /*"p_GetChoice()"*/
  236. PROC p_GetChoice()
  237.     DEF n:PTR TO ln,num=0,fo,sv,input[20]:STRING
  238.     WriteF('\s\n',title_req)
  239.     n:=slist.head
  240.     WHILE n
  241.         IF n.succ<>0
  242.             WriteF('\d[2] -->\s\n',num,n.name)
  243.             num:=num+1
  244.         ENDIF
  245.         n:=n.succ
  246.     ENDWHILE
  247.     WriteF('Selectionnez la startup-sequence de votre choix ?:')
  248.     IF fo:=Open('CONSOLE:',1006)
  249.         ReadStr(fo,input)
  250.         sv:=Val(input,NIL)
  251.         Close(fo)
  252.     ENDIF
  253.     n:=p_GetAdrNode(slist,sv)
  254.     StringF(cmd,'S:\s',n.name)
  255. ENDPROC
  256. /**/
  257. /*"myExecute(cmd)"*/
  258. PROC myExecute(cmd,dir) HANDLE
  259.     DEF ofh:PTR TO filehandle
  260.     DEF ifh:PTR TO filehandle
  261.     DEF newct=NIL:PTR TO mp
  262.     DEF oldct:PTR TO mp
  263.     DEF oldcd=NIL
  264.     DEF newcd=NIL
  265.     DEF test
  266.     IF ofh:=Open('NIL:',1006)
  267.         IF IsInteractive(ofh)
  268.             newct:=ofh.type
  269.             oldct:=SetConsoleTask(newct)
  270.             ifh:=Open('CONSOLE:',1005)
  271.             SetConsoleTask(oldct)
  272.         ELSE
  273.             ifh:=Open('NIL:',1005)
  274.         ENDIF
  275.     ENDIF
  276.     newcd:=Lock(dir,-2)
  277.     oldcd:=CurrentDir(newcd)
  278.     IF test:=SystemTagList(cmd,[SYS_OUTPUT,NIL,
  279.                          SYS_INPUT,NIL,
  280.                          SYS_ASYNCH,TRUE,
  281.                          SYS_USERSHELL,FALSE,
  282.                          NP_STACKSIZE,4096,
  283.                          NP_PRIORITY,0,
  284.                          NP_PATH,NIL,
  285.                          NP_CONSOLETASK,newct,
  286.                          0])
  287.     ENDIF
  288.     CurrentDir(oldcd)
  289.     IF newcd THEN UnLock(newcd)
  290.     IF ofh THEN Close(ofh)
  291.     IF ifh THEN Close(ifh)
  292.     Raise(ER_NONE)
  293. EXCEPT
  294.     RETURN exception
  295. ENDPROC
  296. /**/
  297.  
  298. /**/
  299. /*"main()"*/
  300. PROC main() HANDLE 
  301.     DEF testmain
  302.     tattr:=['topaz.font',8,0,0]:textattr
  303.     IF wbmessage<>NIL
  304.         Raise(ER_ONLYCLI)
  305.     ELSE
  306.         IF (testmain:=p_StartCli())<>ER_NONE THEN Raise(testmain)
  307.     ENDIF
  308.     p_DoReadHeader({banner})
  309.     p_InitAPP()
  310.     IF nowin<>TRUE
  311.         IF (testmain:=p_OpenLibraries())<>ER_NONE THEN Raise(testmain)
  312.         IF (testmain:=p_SetUpScreen())<>ER_NONE THEN Raise(testmain)
  313.         IF (testmain:=p_InitstWindow())<>ER_NONE THEN Raise(testmain)
  314.         IF (testmain:=p_OpenstWindow())<>ER_NONE THEN Raise(testmain)
  315.         REPEAT
  316.             p_LookAllMessage()
  317.         UNTIL reelquit=TRUE
  318.         Raise(ER_NONE)
  319.     ENDIF
  320.     Raise(ER_NONE)
  321. EXCEPT
  322.     IF nowin<>TRUE
  323.         IF st_window THEN p_RemstWindow()
  324.         IF screen THEN p_SetDownScreen()
  325.         p_CloseLibraries()
  326.     ELSE
  327.         p_GetChoice()
  328.     ENDIF
  329.     p_RemAPP()
  330.     SELECT exception
  331.         CASE ER_BADARGS;    WriteF('Bad Args.\n')
  332.         CASE ER_ONLYCLI;    WriteF('Only cli prg.\n')
  333.         CASE ER_LOCKSCREEN; WriteF('Lock Screen Failed.\n')
  334.         CASE ER_VISUAL;     WriteF('Error Visual.\n')
  335.         CASE ER_CONTEXT;    WriteF('Error Context.\n')
  336.         CASE ER_MENUS;      WriteF('Error Menus.\n')
  337.         CASE ER_GADGET;     WriteF('Error Gadget.\n')
  338.         CASE ER_WINDOW;     WriteF('Error Window.\n')
  339.     ENDSELECT
  340.     IF test=TRUE
  341.         WriteF('\s\n',cmd)
  342.     ELSE
  343.         IF run=FALSE
  344.             Execute(cmd,0,stdout)
  345.         ELSE
  346.             myExecute(cmd,'S:')
  347.         ENDIF
  348.     ENDIF
  349. ENDPROC
  350. /**/
  351.